/*
 *
 *  * Copyright (c) 2024 Huawei Technologies Co., Ltd.
 *  * openFuyao is licensed under Mulan PSL v2.
 *  * You can use this software according to the terms and conditions of the Mulan PSL v2.
 *  * You may obtain a copy of Mulan PSL v2 at:
 *  *          http://license.coscl.org.cn/MulanPSL2
 *  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 *  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 *  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 *  * See the Mulan PSL v2 for more details.
 *
 */

// Package client provide global client
package client

import (
	"sync"

	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/rest"

	"application-management-service/pkg/zlog"
)

var (
	kubeClientInstance kubernetes.Interface
	once               sync.Once
)

// InitKubeClient init kubernetes client in singleton
func InitKubeClient(restConfig *rest.Config) {
	once.Do(func() {
		client, err := kubernetes.NewForConfig(restConfig)
		if err != nil {
			zlog.Fatalf("global kubernetes config init failed")
		}
		kubeClientInstance = client
	})
}

// GetKubeClient get kubernetes client
func GetKubeClient() kubernetes.Interface {
	return kubeClientInstance
}
